#ifndef CONSTANTS__H_INCLUDED
#define CONSTANTS__H_INCLUDED

#include "Logging.h"
namespace CEngine {

///Logging
extern Logging defaultLog;

namespace Constants {
    //
    ///Memory
    //
    namespace Memory {
        ///Number of temperary frame stacks (temp allocations will be valid for this many frames).
        const U8  tempFrames = 2;
        ///Size of each temperary frame stack.
        const U64 tempMemory = 10 * 1024;
        ///Sets how strictly memory is tracked and tested against. (10MB will be allocated using new).
        ///0 = no tracking, 1 = temp memory tracking, 2 = full tracking.
        const U8 trackMemory = 2;
        ///Size of the heap (in bytes, must be a multiple of heapPageSize).
        const U64 heapMemory = 100 * 1024 * 1024;
        ///Size of the heap's pages.
        const U64 heapPageSize = 4096;
        ///Size of main stack (in bytes).
        const U64 stackMemory = 1 * 1024 * 1024;
        ///Size of 24 byte (linked list links) pool (in elements).
        const U64 pool24Memory = 110000;
    }
    //
    ///String
    //
    namespace String {
        ///64-bit hash seed used to hash strings.
        const U64 hashSeed = 12764787846358441471;
    }
    //
    ///Logging
    //
    namespace Logging {
        extern const CHAR* defaultLogPath;
    }
    //
    ///Containers
    //
    namespace Containers {
        const U64 dequeBlockSize = 4096;
    }
}

}

#endif // CONSTANTS__H_INCLUDED
